package com.huakai.springenv.aspect;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.Lifecycle;

// @Component
@Slf4j
public class MyLifecycle implements Lifecycle {

    /**
     * 运行状态
     */
    private volatile boolean running = false;

    /**
     * 容器启动后调用
     */
    @Override
    public void start() {
        log.info("收到容器启动的信号后，执行MyLifecycle的start操作...");
        running = true;
    }

    /**
     * 容器停止时调用
     */
    @Override
    public void stop() {
        log.info("收到关闭容器的信号后，执行MyLifecycle的stop操作...");
        running = false;
    }

    /**
     * 检查此组件是否正在运行。
     * 1. 只有该方法返回false时，start()方法才会被执行，容器启动后。
     * 2. 只有该方法返回true时，stop()方法才会被执行，容器停止时。
     */
    @Override
    public boolean isRunning() {
        log.info("检查MyLifecycle组件的运行状态：" + running);
        return running;
    }
}